AI场景存储优化:云知声超算平台基于 JuiceFS 的存储实践
在AI场景中,文件存储中面临一些新的变化:非结构化数据、大量的小文件、训练数据读多写少等。这些变化,给存储带来新的挑战。今天我们邀请到“云知声”,一家从事语音及语言处理的AI企业,为大家分享他们的存储优化实践。全篇长达万字,想了解AI场景平台建设的伙伴们不要错过了。
01
背景
02
存储建设历程
运维要足够简单:存储研发人员要能够较快的上手,运维人员后期的扩容、故障处理足够简单。Lustre 提供了IML[1]一系列的自动化部署与监控工具,在运维方面较为方便。但是由于 Lustre 的软件代码是在内核上运行,如果出现故障,问题定位就显得不那么直观,需要从内核消息这边定位,大部分操作涉及重启操作系统;
数据可靠性:数据是 AI 公司宝贵的资产,算法工程师在存储上的数据要足够稳定与安全。Lustre 目前不支持文件系统级的冗余,只能通过硬件的 RAID 来抵御硬盘故障;
客户端多级缓存功能:构建大规模数据存储系统(PB 量级以上)为了考虑成本数据大部分会存储在 HDD 上,为了自动区分冷热数据,并充分利用我们 GPU 服务器的接近 TB 级的内存与大量的独立 SSD 盘,我们希望具备客户端多级自动缓存功能 ,以应对高密集 I/O 的读写场景;
社区活跃度:社区活跃度也是我们考虑的因素,活跃的社区在功能版本的迭代与 bug 的解决方面能有更快的响应。
03
初识 JuiceFS
JuiceFS 的架构与优势
JuiceFS 整体的架构由元数据引擎、对象存储集群以及 JuiceFS 客户端组成,其中元数据引擎与对象存储提供了多种方案供用户选择。通过 JuiceFS 存储的数据将持久化到对象存储(如 Amazon S3)中,相应的元数据可以根据场景和需求持久化到 Redis、MySQL、SQLite 以及 TiKV 等各种数据库引擎中。
PoC 测试
直接在 Lustre 读 在带有 200G 内存缓存的 JuiceFS 读 在带有 960G SSD 缓存的 JuiceFS 上读
04
JuiceFS 在 Atlas 的使用场景与收益
收益一:加速 AI模型训练
1)语音降噪测试
降噪场景模型的测试中使用的是散文件,每个数据都是 wav 格式的小于 100k 的语音小文件,在降噪场景我们测试了数据 dataload 阶段的 I/O 数据,JuiceFS 客户端节点的内存缓存为 512G,在 500h 规模的数据下、以 40 的 batch size 进行测试。
收益二:加速 AI模型开发
05
JuiceFS 在 Atlas 的使用方式
一种是通过计算节点的 HostPath 访问数据; 另一种是更加云原生的方式,通过结合 Fluid + JuiceFS 对利用 JuiceFS 客户端为 Atlas 的应用提供数据的访问与加速。
1)HostPath Volume
2) Fluid + JuiceFS
06
JuiceFS 存储生产环境建设
元数据引擎
appendonly yes
appendfsync everysec
aof-load-truncated yes
# 安装 gcc9
yum --enablerepo=extras install centos-release-scl-rh
yum install devtoolset-9-gcc scl enable devtoolset-9 bash
# 进行 IB 驱动编译
mount /dev/sr0 ib
./mlnx_add_kernel_support.sh -m /root/ib -k (kernel 版本)
对象存储
42Cores 256GB 24*18T HDD
系统盘: 2* 960G SAS SSD
BlueStore
关闭 NUMA
升级 kernel: 5.4.146 开启 io_uring
Kernel pid max,修改 /proc/sys/kernel/pid_max
Ceph RADOS:直接调用 librados 接口,不走 S3 协议
Bucket shard
关闭 pg 的自动调整功能
OSD 日志存储(采用 bluestore,建议裸容量配比—— block : block.db : block.wal = 100:1:1,后两者建议采用 SSD 或 NVMe SSD)
3 副本
JuiceFS 客户端
yum localinstall -y librad*
make juicefs.ceph
07
未来展望与规划
Lustre 作为老牌 HPC 领域的存储系统,为许多全球最大的超算系统提供动力,具有多年的生产环境经验。其具有符合 POSIX 标准、支持各种高性能低时延的网络,允许 RDMA 访问的优点,适用于传统 HPC 领域的高性能计算,但是在云原生场景的适配上还不够完善,目前只能采用 HostPath Volume 对接,而且其软件运行在 Linux 内核之上,对运维人员要求更高;
JuiceFS 是一款云原生领域的分布式存储系统产品,提供了 CSI Driver 以及 Fluid 等方式使用能够更好地与 Kubernetes 进行结合。在运维部署方面为用户提供了更多灵活的选择,用户既可以选择在云上也可以选择私有化部署,在存储扩容运维方面较为简单。完全兼容 POSIX 标准使得深度学习的应用可以无缝迁移,但是由于后端对象存储的特点其在随机写方面会有较高的延迟,在只读的场景可以使用客户端的多级缓存进行加速较为符合我们的业务特点。
元数据引擎升级:TiKV 适合在 1 亿以上文件数量(最多可以支撑到百亿级文件),对性能以及数据安全都有较高要求的场景,目前我们已经完成了 TiKV 的内部测试也在积极跟进社区的进展,后续要将元数据引擎迁移到 TiKV。
基于目录(项目)的文件配额:开源版本目前还不支持基于目录的配额,目前我们每个部门是归属在 JuiceFS 的不同的目录下,需要对目录的配额做限制。JuiceFS 社区版已经在规划实现这个特性,会在 v1.0.0 之后的版本正式发布。
再次感谢作者的无保留分享
在 AI 场景中,还遇到了哪些棘手的问题,
请扫码加入我们的社群一起里聊聊吧
我们的合伙人
兼社群助手
苏锐全天在线
关于Juicedata
Juicedata,杭州果汁数据科技有限公司是一家企业级存储服务供应商,开发了云原生分布式文件系统 JuiceFS,致力于在大数据时代下,为客户打造安全、高性能、自主可控的存储基础设施及服务。
2021年,JuiceFS 正式在GitHub上开源,已经获得5.5K star,欢迎开发者加入我们。(github.com/juicedata/juicefs)
点击下方“阅读原文” 访问官网